<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of agenciaClass
 *
 * @author Diseño-2
 */
class agenciaClass extends utilClass {

    
    /*Este metodo devuelve el criteria*/
    public function listadoAgencias($razonSocial="",$ruc="",$telefono="",$estado="")
    {
        $criteria = new Criteria();
        if($razonSocial!="")
        {
           $criteria->add(AgenciaPeer::RAZON_SOCIAL_AGENCIA,'%'.$razonSocial.'%',  Criteria::LIKE);
        }
        if($ruc!="")
        {
           $criteria->add(AgenciaPeer::RUC_AGENCIA,'%'.$ruc.'%',  Criteria::LIKE);
        }
        if($telefono!="")
        {
           $criteria->add(AgenciaPeer::TELEFONO_AGENCIA,'%'.$telefono.'%',  Criteria::LIKE);
        }
        if($estado!="none")
        {
           $criteria->add(AgenciaPeer::ESTADO_AGENCIA,'%'.$estado.'%',  Criteria::LIKE);
        }
        return $criteria;
    }
    
    
    
public function grabarAgencia($razon,$ruc,$direccion,$telefono,$estado,$rebate,$nombrecontacto,$emailcontacto,$telefonocontacto,$cuentadetraccion,$observacion){


   $arrayRespuesta =  array("success"=>false,"mensaje"=>"Error al grabar Detalle","objecto"=>null,"code"=>602);

    try 
    {
            $sessionName="s_agenciaInfoBancaria";
            $coneccion   = Propel::getConnection();
            $coneccion->beginTransaction();
            $agencia = new Agencia();

            $agencia->setRazonSocialAgencia($razon);
            $agencia->setRucAgencia($ruc);
            $agencia->setDireccionAgencia($direccion);
            $agencia->setTelefonoAgencia($telefono);
            $agencia->setEstadoAgencia($estado);
            $agencia->setRebateAgencia($rebate);
            $agencia->setNombreContactoAgencia($nombrecontacto);
            $agencia->setEmailContactoAgencia($emailcontacto);
            $agencia->setTelefonoContactoAgencia($telefonocontacto);
            $agencia->setCuentaDetraccion($cuentadetraccion);
            $agencia->setObservaciones($observacion);         
            $agencia->save();

            $respuestaDetalle= $this->ingresarDetalleInformacionBancaria($sessionName, 2, $agencia->getId());
            if($respuestaDetalle['success'])
            {
                $arrayRespuesta['success'] = true;
                $arrayRespuesta['mensaje']  = "Exito";
                $coneccion->commit();
            }
            else
            {
                $arrayRespuesta['mensaje'] = $respuestaDetalle['mensaje'];
                $coneccion->rollBack();
            } 
            Propel::close();
           
    }
    catch (Exception $exc) 
    {
      
          $coneccion->rollBack();
          Propel::close();
          $arrayRespuesta['mensaje'] = $e->getMessage();
          $arrayRespuesta['code']    = 601;
          return $arrayRespuesta;
    }

         return $arrayRespuesta;

}

 /*Este metodo obtiene el Bean Cliente y ademas crea una session de detalle del cliente(
     * informacion bancaria), para asi poder trabajar el modulo de edicion del cliente
     */
    public function obtenerAgencia($idAgencia)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"Agencia no encontrado","objecto"=>null,"code"=>601);
        $sessionName = "s_editAgenciaInfoBancaria";
        /* Obtengo el Cliente */
        $agenciaBean = AgenciaPeer::retrieveByPK($idAgencia);
        if(is_object($agenciaBean))
        {
            /*Obtengo la lista de informacion bancaria*/
            $criteria = new Criteria();
            /*1= TABLA CLIENTE*/
            $criteria->add(InformacionBancariaPeer::ID_TABLA, 2);
            $criteria->add(InformacionBancariaPeer::ID_RELACION, $idAgencia);
            $lista  = InformacionBancariaPeer::doSelect($criteria);
            /* Borro la session, en caso de que halla estado creado antes*/
            sfContext::getInstance()->getUser()->setAttribute($sessionName,null);
            /*Creo la session para la lista de edicion*/ 
            if(count($lista)>0)
            {
                $servicioAjax = new ajaxClass();
                foreach($lista as $row)
                {                          
                     /*Aca implemetar logica de moneda*/
                     /***********/
                    
                     /**/
                     if($row->getMonedaId()==1){$moneda="soles";}
                     if($row->getMonedaId()==2){$moneda="dolares";}
                     
                     $arrayParametros = array("nombreBanco"=>$row->getNombreBanco(),
                                              "cuentaBanco"=>$row->getCuenta(),
                                              "moneda" => $moneda,
                                              "id" => $row->getId()
                                              );
                     $servicioAjax->agregarInformacionBancariaEdit($sessionName, $arrayParametros);
                }  
            } 
            $arrayRespuesta['success'] = true;
            $arrayRespuesta['mensaje'] = "exito";
            $arrayRespuesta['objecto'] = $agenciaBean;             
        }
        return $arrayRespuesta;
    }
    
    
    /*Este metodo solo obtiene el Bean Agencia*/
    public function getAgencia($idCliente,$tipoBusqueda="id")
    {
        $agenciaBean = null;
        if($tipoBusqueda=="id")
        {
              $agenciaBean = AgenciaPeer::retrieveByPK($idCliente);
        }
        return $agenciaBean;
    }
    
     public function editarAgencia($idAgencia,$razon,$ruc,$direccion,$telefono,$estado,$rebate,$nombrecontacto,$emailcontacto,$telefonocontacto,$cuentadetraccion,$observacion) 
    { $arrayRespuesta =  array("success"=>false,"mensaje"=>"Error al grabar Agencia","objecto"=>null,"code"=>602);
        try 
        {            
            $sessionName = "s_editAgenciaInfoBancaria";
            $coneccion   = Propel::getConnection();
            $coneccion->beginTransaction();
            
            $agencia = $this->getAgencia($idAgencia);
            if(is_object($agencia))
            {
                $agencia->setRazonSocialAgencia($razon);
                $agencia->setRucAgencia($ruc);
                $agencia->setDireccionAgencia($direccion);
                $agencia->setTelefonoAgencia($telefono);
                $agencia->setEstadoAgencia($estado);
                $agencia->setRebateAgencia($rebate);
                $agencia->setNombreContactoAgencia($nombrecontacto);
                $agencia->setEmailContactoAgencia($emailcontacto);
                $agencia->setTelefonoContactoAgencia($telefonocontacto);
                $agencia->setCuentaDetraccion($cuentadetraccion);
                $agencia->setObservaciones($observacion);          
                $agencia->save();
                $respuestaDetalle  = $this->editarDetalleInfomacionBancaria($sessionName, 2, $agencia->getId());
                $respuestaEliminar = $this->eliminarDetalleInfomacionBancaria("s_eliminarInformacionBancariaAgencia", 2, $agencia->getId());
                
                if($respuestaDetalle['success'])
                {
                  $coneccion->commit(); 
                  $arrayRespuesta['success'] = true;
                  $arrayRespuesta['mensaje'] = "exito";
                  $arrayRespuesta['objecto'] = $agencia;   
                }
                else
                {
                    $arrayRespuesta['mensaje'] = $respuestaDetalle['mensaje'];                  
                } 
                Propel::close();
                 
            }            
                     
        }
        catch (Exception $e)
        {
            $coneccion->rollBack();
            Propel::close();
            $arrayRespuesta['mensaje'] = $e->getMessage();
            $arrayRespuesta['code']    = 601;
            return $arrayRespuesta;
        }
        return $arrayRespuesta;
    }

    
    public function deleteAgencia($idAgencia)
    {
        $agenciaBean = AgenciaPeer::retrieveByPK($idAgencia);
        if(is_object($agenciaBean))
        {
            $criteria = new Criteria();
            $criteria->add(InformacionBancariaPeer::ID_RELACION,$idAgencia);
            $criteria->add(InformacionBancariaPeer::ID_TABLA,2);
            InformacionBancariaPeer::doDelete($criteria);
            $agenciaBean->delete(); 
            return true;
        }
        return false;
    }

}
?>
